package cc.yugu.yhdw.webserver.persistence.basic;

import cc.yugu.yhdw.common.domain.basic.Passport;
import cc.yugu.yhdw.common.domain.basic.PassportInfo;
import cc.yugu.yhdw.common.domain.basic.PassportInfo;
import cc.yugu.yhdw.common.persistence.MasterMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
/**
 * 客户信息映射
 *
 * @Date:Created in 2018/6/28 16:40
 * @Author:
 * @Modified By: zjn 2018/6/28 16:40
 */
public interface PassportMapper extends MasterMapper {
    /**
    * 根据主键id查询表bas_passport 中指定字段信息
    *
    * @Param: [id]
    * @Return: cc.yugu.yhdw.common.domain.basic.PassportInfo
    * @Author By: zjn 2018/6/28  16:41
    */
    public PassportInfo findInfo(int id);
    /**
    * 根据手机号查询主键id
    *
    * @Param: [mobile]
    * @Return: cc.yugu.yhdw.common.domain.basic.PassportInfo
    * @Author By: zjn 2018/6/28  16:42
    */
    public PassportInfo findByMobile(String mobile);
    /**
    * 根据质检id更新电池id编号
    *
    * @Param: [id, batteryId]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:43
    */
    public int updateBattery(@Param("id") int id, @Param("batteryId") String batteryId);
    /**
    * 返回查询字段的行数
    *
    * @Param: [id, property, value]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:44
    */
    public int findUnique(@Param("id") Integer id, @Param("property") String property, @Param("value") Object value);
    /**
    * 根据主键id查询数据
    *
    * @Param: [id]
    * @Return: cc.yugu.yhdw.common.domain.basic.Passport
    * @Author By: zjn 2018/6/28  16:44
    */
    public Passport find(int id);

    /**
    * 根据主键id查询余额
    *
    * @Param: [id]
    * @Return: java.lang.Integer
    * @Author By: zjn 2018/6/28  16:44
    */
    public Integer findBalance(int id);
    /**
    * 返回指定查询字段的行数
    *
    * @Param: [createTime, agentId, agencyId]
    * @Return: java.lang.Integer
    * @Author By: zjn 2018/6/28  16:45
    */
    public Integer findToDayTotal(@Param("createTime") Date createTime, @Param("agentId") Integer agentId, @Param("agencyId") Integer agencyId);
    /**
    * 返回行数
    *
    * @Param: [search]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:46
    */
    public int findPageCount(Passport search);
    /**
    * 分页查询，根据指定字段查询信息，并按照主键id降序排列
    *
    * @Param: [search]
    * @Return: java.util.List<cc.yugu.yhdw.common.domain.basic.Passport>
    * @Author By: zjn 2018/6/28  16:46
    */
    public List<Passport> findPageResult(Passport search);
    /**
    * 插入数据到指定字段
    *
    * @Param: [user]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:47
    */
    public int insert(Passport user);
    /**
     * 插入客户表数据（包括代理商信息）
     * @Param [user]
     * @Return int
     * @Author zxj 2018/7/18
     */
    public int insertAll(Passport user);
    /**
    * 更新余额
    *
    * @Param: [id, balance]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:48
    */
    public int updateBalance(@Param("id") int id, @Param("balance") int balance);
    /**
    *
    *
    * @Param: [id, addressBookId]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:49
    */
    public int updateAddressBookId(@Param("id") int id, @Param("addressBookId") Integer addressBookId);
    /**
    * 根据主键id更新
    *
    * @Param: [user]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:49
    */
    public int update(Passport user);
    /**
    * 更新客户表（新增：更新映射，带有运营商和代理商id的更新）
    * 
    * @Param: [user]
    * @Return: int
    * @Author By: zjn 2018/7/20  15:24
    */ 
    public int updateAge(Passport user);

    /**
    * 根据运营商id更新
    * 
    * @Param: [agentId]
    * @Return: int
    * @Author By: zjn 2018/7/20  15:21
    */ 
    public int updateAgent(int agentId);
    /**
    * 根据代理商id更新数据
    *
    * @Param: [agencyId]
    * @Return: int
    * @Author By: zjn 2018/6/28  16:51
    */
    public int updateAgency(int agencyId);

    /* 后台目前没有退还押金功能，下面方法没有用到，数据库中也没有相关的表 */
    int setOldBatteryForegiftOrderId(@Param("id") long id);

    int clearBatteryForegiftOrderId(@Param("id") long id, @Param("statusList") List<Integer> statusList);

}
